Programmable algorithms such as shading procedures typically require access to parameters that may be associated with a geometry to be drawn or rendered for an image scene or an object therein. Generally, the values of these parameters vary over each surface in response to an artist or technical director's input. For example, an artist may desire that colors vary across a portion of an image scene or object within. Algorithms such as shaders available to artists are thus desirably programmable to increase the flexibility with which designs may be implemented and/or modified.
Many systems provide a variety of hardware-accelerated methods to implement sophisticated surface shading algorithms to increase processing speeds. These conventional systems may take advantage of a graphics systems interface such as OPENGL® and/or a graphics pipeline. However, some of these systems typically break down programmable algorithms into steps that may be executed by the graphics systems interface and/or the graphics pipeline, but do not supply the parameters with geometry data or allow the parameters to be evaluated on the surface. Other systems may accept parameters but do not associate or evaluate them with tessellated surface values. As a result, these conventional systems typically cannot take advantage of the graphics pipeline, and thus may suffer from increased processing time. As a consequence, an artist's flexibility to change surface appearances interactively by using the parameters is reduced.
In addition, those systems that do utilize the graphics pipeline typically break down the algorithms into steps so specific to the pipeline that they cannot maintain the same level of performance while providing portability from platform to platform. In addition, some of these systems typically do not manage data to be used to draw image scenes with multiple objects using different programmable algorithms. Such a configuration may unnecessarily replicate data, exceed hardware resources and/or interfere with rendering of various objects.